package widget_data

import (
	"encoding/xml"
	"fmt"
	"os"
)

type SkinLoader struct {
	root   SkinRoot
	Parser IParser
}

func NewSkinLoader(parser IParser) IWidgetLoader {
	return &SkinLoader{
		Parser: parser,
	}
}
func (w *SkinLoader) Load(data []byte) {
	err := xml.Unmarshal(data, &w.root)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		os.Exit(1)
	}
	w.traverseWidgets(w.root.ChildrenWidget)
}

func (w *SkinLoader) traverseWidgets(WidgetData []SkinData) {
	for _, item := range WidgetData {
		w.Parser.StartElement(nil, item.TemplateName, &item)
		//if len(item.ChildrenWidget) > 0 {
		//	w.traverseWidgets(item.ChildrenWidget)
		//}
		w.Parser.EndElement(nil, item.TemplateName, &item)
	}
}
